"""
读取二进制数据到可变缓冲区中

问题：
    你想直接读取二进制数据到一个可变缓冲区中，而不需要做任何的中间复制操作。
    或者你想原地修改数据并将它写回到一个文件中去。
解决方案：
    为了读取数据到一个可变数组中，使用文件对象的 readinto() 方法。
"""

import os


def read_into_buffer(file_name):
    buf = bytearray(os.path.getsize(file_name))
    with open(file_name, "rb") as f:
        f.readinto(buf)
    return buf


def use_read():
    buf = read_into_buffer("smile.bin")
    print(buf[0:2])
    # 输出结果：
    """
    bytearray(b'do')
    """

    with open("smile_life.bin", "wb") as f:
        f.write(buf)


if __name__ == '__main__':
    use_read()
